#include <stdlib.h>
#include <pthread.h>

typedef struct {
    int data;
} Singleton;

static Singleton* instance = NULL;
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

Singleton* get_instance() {
    if (instance == NULL) {          // 第一次检查（避免不必要的锁）
        pthread_mutex_lock(&mutex);  // 加锁
        if (instance == NULL) {      // 第二次检查（确保线程安全）
            instance = (Singleton*)malloc(sizeof(Singleton));
            instance->data = 0;
        }
        pthread_mutex_unlock(&mutex);
    }
    return instance;
}
